package com.example.mvvmtemplate.utli.edit.filter;

import android.text.InputFilter;
import android.text.Spanned;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 只能是英文数字汉字
 */
public class EnglishNumberChineseFilter implements InputFilter {

    private final Pattern pattern = Pattern.compile("[^a-zA-Z0-9\\u4E00-\\u9FA5]");

    /**
     * 当缓冲区要使用source的[start - end)范围内的内容替换dest的[dstart - dend)范围内的内容时调用该方法。
     * 返回值是你最终想要添加的文本。如果返回空字符""，则不添加新内容。如果返回空(null)，则添加本次输入的全部内容(即source)
     * 当你在删除已有文本时，source的长度为0。不要以为是错误而过滤这种清空。
     * 不要直接修改dest的内容，它的内容只是用来查看的。
     */
    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
        Matcher matcher = pattern.matcher(source);
        if (!matcher.find()) {
            return null;
        } else {
            return "";
        }
    }
}
